package com.loong.system.service;

import cn.dev33.satoken.stp.SaTokenInfo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.loong.system.dto.*;
import com.loong.system.entity.User;
import com.loong.system.vo.UserListVO;
import com.loong.system.vo.WxLoginVO;
import java.util.List;

/**
 * @author 47349
 * @description 针对表【sys_user(用户表)】的数据库操作Service
 * @createDate 2024-01-16 23:53:06
 */
public interface IUserService extends IService<User> {
  /**
   * 登录接口
   *
   * @param user 用户信息
   */
  SaTokenInfo login(User user);

  /**
   * 微信登录
   *
   * @param wxLoginVO wx登录信息
   * @param wxLoginDTO wx登录参数
   * @return
   */
  SaTokenInfo login_wx(WxLoginVO wxLoginVO, WxLoginDTO wxLoginDTO);

  /**
   * 获取用户权限
   *
   * @return
   */
  List<UserAuthDTO> getUserAuthList();

  /**
   * 获取用户列表
   *
   * @param userPageDTO 查询条件
   * @return 用户列表
   */
  Page<UserListVO> getUserList(UserPageDTO userPageDTO);

  /**
   * 新增用户
   *
   * @param userAddDTO 新增用户
   */
  void addUser(UserAddDTO userAddDTO);

  /** 新增租户管理员 */
  void addTenantUser(String phone, String nickName, String password, String tenantId);

  /**
   * 删除用户
   *
   * @param userId 用户id
   */
  void removeUser(String userId);

  /**
   * 更新用户
   *
   * @param userUpdateDTO
   */
  void updateUser(UserUpdateDTO userUpdateDTO);
}
